home *** CD-ROM | disk | FTP | other *** search
/ NeXT Education Software Sampler 1992 Fall / NeXT Education Software Sampler 1992 Fall.iso / SoundAndMusic / cmix / lib / bbuzz.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-02-25  |  489 b   |  28 lines

  1. float *
  2. bbuzz(amp,si,hn,f,phs,a,alen)
  3. float amp,si,hn,*f,*phs,*a;
  4. long alen;
  5. {
  6.     register i,j,k;
  7.     float q,d,h2n,h2np1;
  8.     float *fp= a;
  9.     h2n = hn+hn;
  10.     h2np1 = h2n+1.;
  11.     for(i=0; i<alen; i++) {
  12.         j = *phs;
  13.         k = (j+1) % 1024;
  14.         q = (int)((*phs - (float)j) * h2np1)/h2np1;
  15.         d = *(f+j);
  16.         d += (*(f+k)-d)*q;
  17.         if(!d) *fp++  = amp;
  18.         else { 
  19.             k = (long)(h2np1 * *phs) % 1024;
  20.             *fp++  = amp * (*(f+k)/d - 1.)/h2n;
  21.         } 
  22.         *phs += si;
  23.         while(*phs >= 1024.)  
  24.             *phs -= 1024.;
  25.     }
  26.     return(a);
  27. }
  28.